Test automation systems are used to automatically test software. Software testing using an automatic test program generally avoids the errors that humans make when they tire after multiple repetitions. For example the automation test program provides consistent test execution and does not skip or add any tests by mistake. The testing program can perform the functions much quicker then a normal human being using the product, and can record the results of the test accurately. The results are automatically fed into a database that may provide useful statistics on how well the software development process is going.
Currently, for most software projects, thorough automation is not even executed before developers check in their code. Automation has been traditionally limited to testing code after it has been checked in due to time constraints related to testing code changes before they are checked in.
Automation testing also becomes problematic for large-scale software development projects. As the project size increases, the time required to run the automation lengthens. At a certain point, the time required to run the automation is so long that running the automation for the code changes has become prohibitively time consuming. Large-scale software development projects may have numerous developers making code changes that affect code in other parts of the project. Without comprehensive testing of each of the code changes, the software project may take on bugs and errors in one area that impacts one or more related areas. The late cycle discovery of the dependencies introduces project delays because of the time required to back out the problematic code. Systems have been developed to provide sufficient resources to reduce the time constraints for running automation tests on code changes before the code is checked in. However, many of the time reduction advantages are lost due to lack of knowledge by developers of which automation tests to run. As often is the case, many developers may end up with prohibitively long automation testing time requirements, simply because they selected a host of unnecessary tests to run.